package com.string_;

public class String01 {
    public static void main(String[] args) {
        //1. String 对象用于保存字符串，也就是一组字符序列
        //2. "jack" 字符串常量，双引号括起的字符序列
        //3. 字符串的字符使用Unicode字符编码，一个字符(不区分字母还是汉字)占两个字节
        //4. String 类有很多构造器，构造器重载
        // 常用的有String s1 = new String();
        //5. String 类实现了  接口 Serializable 【可串行化，可以在网络传输】
        //                  接口 Comparable 【可比较大小】
        //6. String 是 final 类，不能被其他的类继承
        //7. String 有属性 private final char  value[] ;用于存放字符串内容
        //8. 一定要注意： value是一个final类型，不可以修改【value不能指向新的地址，但是单个字符内容是可以变化的】

        //直接赋值
        String name1 = "tom";
        String name2 = "tom";
        System.out.println(name1 == name2);
        System.out.println(name1.equals(name2));

        //调用构造器
        String name3 = new String("lucy");
        String name4 = new String("lucy");
        System.out.println(name3 == name4);
        System.out.println(name3.equals(name4));

        //String name5 = new String(char[] 'abc');
        //final char[] value = {'a','b','c'};  AAA
        char[] value = {'a', 'b', 'c'};
        char[] v2 = {'t', 'o', 'm'};
        value[0] = 'H';
        value = v2; //AAA value是一个final类型，不可以修改

        String a = "abc";
        String b = new String("abc");
        System.out.println(a == b);
        System.out.println(a.equals(b));
        System.out.println(a == b.intern());
        System.out.println(b == b.intern());


        String c = "helloabc";
        String d = "hello" + "abc";
        System.out.println(c == d);


    }
}
